package com.hzz.api.patrol;

import com.github.pagehelper.PageInfo;
import com.hzz.dto.patrol.PatrolStatDto;
import com.hzz.dto.patrol.PatrolTaskDto;
import com.hzz.framework.Response;

import java.util.HashMap;
import java.util.List;

/**
 * <p>
 * 临时巡查任务 业务处理接口类。
 */
public interface IPatrolTaskService {
    /**
     * <p>
     * 信息编辑。
     */
    Response saveOrUpdateData(PatrolTaskDto dto) throws Exception;
    
    /**
     * <p>
     * 物理删除。
     */
    String deleteData(PatrolTaskDto dto) throws Exception;
    
    /**
     * <li>逻辑删除。
     */
    String deleteDataById(PatrolTaskDto dto) throws Exception;
    
    /**
     * <p>
     * 信息列表 分页。
     */
    PageInfo findDataIsPage(PatrolTaskDto dto) throws Exception;
    
    /**
     * <p>
     * 信息列表。
     */
    List<PatrolTaskDto> findDataIsList(PatrolTaskDto dto) throws Exception;
    
    /**
     * <p>
     * 信息详情。
     */
    PatrolTaskDto findDataById(PatrolTaskDto dto) throws Exception;
    
    /**
     * <p>
     * 信息列表。
     */
    List<PatrolTaskDto> findListByParam(PatrolTaskDto dto) throws Exception;
    
    /**
     * 根据参数分页查询
     * @param dto
     * @return
     * @throws Exception
     */
    PageInfo findListByParamPage(PatrolTaskDto dto) throws Exception;
    
    /**
     * <p>
     * 完成情况统计
     */
    PageInfo findCompletionStatistics(PatrolTaskDto dto) throws Exception;
    
    /**
     * 本级河长日志分页
     */
    PageInfo findPatrolTaskLog(PatrolTaskDto dto) throws Exception;
    
    /**
     * 下级河长日志分页
     */
    PageInfo findPatrolTaskLogJunior(PatrolTaskDto dto) throws Exception;
    
    /**
     * 本级河长日志列表
     */
    List findPatrolTaskLogList(PatrolTaskDto dto) throws Exception;
    
    /**
     * 下级河长日志列表
     */
    List findPatrolTaskLogListJunior(PatrolTaskDto dto) throws Exception;
    
    /**
     * app查询巡查次数
     * @return
     * @throws Exception
     */
    Integer getPatrolTimes(PatrolTaskDto dto) throws Exception;
    
    /**
     * 巡查统计-巡查率
     * @return
     * @throws Exception
     */
    List patrolStat(PatrolStatDto dto) throws Exception;
    
    /**
     * 分页查询巡查统计
     * @param dto
     * @return
     * @throws Exception
     */
    PageInfo patrolStatTable(PatrolStatDto dto) throws Exception;
    
    /**
     * 查询前5名巡查率
     * @return
     * @throws Exception
     */
    List<HashMap> getInspectionRateDESC() throws Exception;
    
    /**
     * 查询后5名巡查率
     * @return
     * @throws Exception
     */
    List<HashMap> getInspectionRateASC() throws Exception;
    
    /**
     * 查询任务
     * @return
     * @throws Exception
     */
    List<PatrolTaskDto> getList(PatrolTaskDto dto) throws Exception;
}